#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#include <tools.h>
#include <tcp_socket.h>
#include "client_logon.h"



void create(void)
{
	ctos.type = M_CREATE;

	printf("请输入姓名：");
	get_str(ctos.acc.name,sizeof(ctos.acc.name));

	printf("请输入证件号：");
	get_str(ctos.acc.card,sizeof(ctos.acc.card));

	printf("请输入密码：");
	get_passwd(ctos.acc.passwd,sizeof(ctos.acc.passwd),true);

	printf("请输入预存的金额：");
	scanf("%f",&ctos.acc.balance);

	send_tcp(cts,&ctos,sizeof(ctos));
	recv_tcp(cts,&stoc,sizeof(stoc));
	printf("%s\n",stoc.str);
}

void destroy(void)
{
	ctos.type = M_DESTROY;
	
	printf("请输入卡号：");
	get_str(ctos.acc.bank,sizeof(ctos.acc.bank));
	
	printf("请输入姓名：");
	get_str(ctos.acc.name,sizeof(ctos.acc.name));

	printf("请输入证件号：");
	get_str(ctos.acc.card,sizeof(ctos.acc.card));

	printf("请输入密码：");
	get_passwd(ctos.acc.passwd,sizeof(ctos.acc.passwd),true);


	send_tcp(cts,&ctos,sizeof(ctos));
	recv_tcp(cts,&stoc,sizeof(stoc));
	printf("%s\n",stoc.str);

}

void login(void)
{
	ctos.type = M_LOGIN;
	
	printf("请输入卡号：");
	get_str(ctos.acc.bank,sizeof(ctos.acc.bank));

	printf("请输入密码：");
	get_passwd(ctos.acc.passwd,sizeof(ctos.acc.passwd),true);


	send_tcp(cts,&ctos,sizeof(ctos));
	
	recv_tcp(cts,&stoc,sizeof(stoc));
	
	if(M_SUCCESS == stoc.type)
	{
		sscanf(stoc.str,"%s",ctos.acc.name);
		logon();
	}
	else
		printf("%s\n",stoc.str);
}

void unlock(void)
{
	ctos.type = M_UNLOCK;

	printf("请输入卡号：");
	get_str(ctos.acc.bank,sizeof(ctos.acc.bank));
	
	printf("请输入姓名：");
	get_str(ctos.acc.name,sizeof(ctos.acc.name));

	printf("请输入证件号：");
	get_str(ctos.acc.card,sizeof(ctos.acc.card));

	printf("请输入密码：");
	get_passwd(ctos.acc.passwd,sizeof(ctos.acc.passwd),true);


	send_tcp(cts,&ctos,sizeof(ctos));
	recv_tcp(cts,&stoc,sizeof(stoc));
	printf("%s\n",stoc.str);
}

void menu_main(void)
{
	printf("***欢迎使用指针银行交易系统***\n");
	printf("1、开户		2、销户\n");
	printf("3、登录		4、解锁\n");
	printf("5、退出系统\n");
	printf("---------------------\n");
	printf("请输入指令：");
}

int main(int argc,const char* argv[])
{
	if(3 != argc)
	{
		puts("Use:./server <ip> <port>");
		return 0;
	}

	cts = create_tcp(argv[1],atoi(argv[2]));
	if(connect_tcp(cts))
	{
		return -1;
	}

	for(;;)
	{
		menu_main();
		switch(get_cmd('1','5'))
		{
		case '1': create(); break;
		case '2': destroy(); break;
		case '3': login(); break;
		case '4': unlock(); break;
		case '5': return EXIT_SUCCESS; 
		}
	}
}
